Skip to main content

1. Model介绍

Written: 2026.06 一个 AI 应用的核心就是它所依赖的大语言模型,LangChain作为一个“工具”,不提供任何 LLMs,而是依赖于第三方集成各种大模型。比如,将 OpenAI、Anthropic、Hugging Face 、LlaMA、阿里Qwen、ChatGLM等平台的模型无缝接入到你的应用 LangChain 模型接口可参考官方文档:https://reference.langchain.com/python/langchain_core/language_models/

1.1 Model的分类

LangChain中将大语言模型分为以下几种,我们主要使用的是聊天模型:

1.2 Model 继承关系

在 LangChain 的类结构中,顶层基类是 BaseLanguageModel,用于定义模型的通用接口。它分为两支:BaseChatModel 和 BaseLLM 接入聊天模型时需继承 BaseChatModel,如常用的 ChatOpenAI;而文本生成模型则继承 BaseLLM,如 OpenAI

1.3 Chat Model 主要参数

在构建聊天模型时,有一些标准化参数: 以上的标准参数,也只是适用于部分的大语言模型,有些参数在特定模型中可能是无效的,这些标准化参数仅对 LangChain 官方提供集成包的模型(如 langchain-openailangchain-anthropic)生效,在langchain-community包中的第三方模型,则不需要遵守这些标准化参数的规则

1.4 Message组件

调用模型后返回了一条AI消息,在LangChain中,消息有几种不同的类型。所有消息都有 type 、 content 、 response_metadata 等属性

2. 开发环境配置

2.1 创建项目

推荐使用 uv 初始化并管理项目,uv 具体操作可参考文档:https://www.cuiliangblog.cn/detail/section/228701279
uv 快速搭建 LangChain 环境

2.2 创建密钥环境变量

创建.env文件
.env 文件内容:
通过 python-dotenv 库读取 env 文件中的环境变量,并加载到当前运行的环境中

3. 接入大模型

3.1 接入 Ollama

参考文档:https://python.langchain.com/docs/integrations/chat/ollama/
接入Ollama
执行结果如下

3.2 接入 DeepSeek

参考文档:https://python.langchain.com/api_reference/deepseek/chat_models/langchain_deepseek.chat_models.ChatDeepSeek.html 申请地址:https://platform.deepseek.com/ 支持模型列表
  • deepseek-chat:通用对话模型
  • deepseek-coder:偏向代码理解与生成
  • deepseek-llm:较大通用模型(如 DeepSeek-VL)
  • deepseek-moe:Mixture of Experts 多专家模型
接入DeepSeek

3.3 接入通义千问

参考文档:https://python.langchain.com/api_reference/community/chat_models/langchain_community.chat_models.tongyi.ChatTongyi.html 申请地址:https://dashscope.console.aliyun.com/overview
接入Qwen

3.4 接入 openAI

参考文档:https://python.langchain.com/docs/integrations/chat/ 申请地址:https://platform.openai.com/account/api-keys 需要注意的是国内网络原因不能直接调用,可以通过第三方平台调用。例如https://closeapi.net/
接入OpenAI

4. 模型调用方法

4.1 对话模型

聊天模型,除了将字符串作为输入外,还可以使用聊天消息作为输入,并返回聊天消息作为输出。LangChain有一些内置的消息类型:
  • HumanMessage:人类消息,type为”user”,表示来自用户输入。比如“实现 一个快速排序方法”。
  • AIMessage: AI 消息,type为”ai”,这可以是文本,也可以是调用工具的请求。
  • SystemMessage:系统消息,type为”system”,告诉大模型当前的背景是什么,应该如何做,并不是所有模型提供商都支持这个消息类型
  • ToolMessage/FunctionMessage:工具消息,type为”tool”,用于函数调用结果的消息类型
  • ChatMessage:可以自定义角色的通用消息类型。
调用ChatModel(对话模型)
执行结果如下
其中SystemMessage 就是系统提示词,关于提示词更多内容,可以访问:https://www.cuiliangblog.cn/detail/section/228046450

4.2 流式输出

在Langchain中,语言模型的输出分为了两种主要的模式:流式输出非流式输出 非流式输出:这是Langchain与LLM交互时的默认行为,是最简单、最稳定的语言模型调用方式。当用户发出请求后,系统在后台等待模型生成完整响应,然后一次性将全部结果返回。 举例:用户提问,请编写一首诗,系统在静默数秒后突然弹出了完整的诗歌。(体验较单调) 在大多数问答、摘要、信息抽取类任务中,非流式输出提供了结构清晰、逻辑完整的结果,适合快速集成和部署。 流式输出:一种更具交互感的模型输出方式,用户不再需要等待完整答案,而是能看到模型逐个token 地实时返回内容。 举例:用户提问,请编写一首诗,当问题刚刚发送,系统就开始一字一句(逐个token)进行回复,感觉是一边思考一边输出。更像是“实时对话”,更为贴近人类交互的习惯,更有吸引力。适合构建强调“实时反馈”的应用,如聊天机器人、写作助手等。 Langchain 中通过设置 stream=True 并配合 回调机制 来启用流式输出。 通过 model.stream 方法即可实现流式调用,代码如下:
设置为流式输出
执行结果如下

4.3 批量调用

LangChain 支持 批量调用(Batch Inference),也就是一次性向模型提交多个输入并并行处理,从而显著提升吞吐量。 当你需要让模型处理多条输入时,比如:文本摘要批量生成、多轮任务预处理逐条 .invoke() 会导致网络请求多次、速度慢、成本高等问题,而LangChain 提供的 **.batch()** 接口 能在内部自动并行执行。
进行批量调用
执行结果如下

4.4 异步调用

LangChain 提供 ainvoke() 异步调用接口,用于在 异步环境(async/await) 中高效并行地执行模型推理。 它的核心作用是:让你同时调用多个模型请求而不阻塞主线程 —— 特别适合大批量请求或 Web 服务场景(如 FastAPI)
执行异步调用
执行结果如下